import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @description:
 * @Author: wuzhenbin
 * @CreateTime: 2025-02-14
 */
public class leetcode_189 {
    public static void main(String[] args) {

    }

    public void rotate(int[] nums, int k) {
        //为什么 Arrays.asList() 不能直接处理 int[]？
        //Arrays.asList() 是基于数组的引用类型来工作的，它将数组作为对象传递，并返回一个基于该数组的 List。然而，原始类型（如 int、char 等）不是对象，而是基本数据类型，因此 Arrays.asList() 不会将 int[] 转换为 List<Integer>。
        //Arrays.asList 是处理Integer[]数组的
        List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());
        for (int i = 0; i < k; i++) {
            list.add(nums[i]);
            list.remove(i);
        }
    }

    //脑筋急转弯
    public void rotate1(int[] nums, int k) {
        k = k % nums.length;
        reverse(nums,0, nums.length-1);
        reverse(nums,0,k-1);
        reverse(nums,k, nums.length-1);

    }

    private void reverse(int[] nums, int left, int right) {
        while (left < right) {
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
            left++;
            right--;
        }
    }
}
